home *** CD-ROM | disk | FTP | other *** search
/ MacWorld 1999 January - Disc 2 / Macworld (1999-01) (Disk 2).dmg / Serious Demos / Symbolic Composer 4.2 / Environment / System / SYMBOL / Neurons / def-neuron < prev    next >
Lisp/Scheme  |  1998-10-23  |  1KB  |  41 lines

  1. def-neuron name rules
  2.  
  3. Defines a neuron which uses unlimited number of rules to determine how the unlimited number of input patterns are processed and what output pattern is produced in this process. Neurons are activated with run-neuron. The neuron definition can also contain the descriptions out-range and otherwise.
  4.  
  5. - otherwise is used if none of the rules are fired.
  6.  
  7. (def-neuron test3
  8.    (and (in 1 'a) (in 2 'a)) ; test
  9.    'a                        ; fire if true
  10.    (and (in 1 'b) (in 2 'a) (out 'a -1))
  11.    'x
  12.    (otherwise '=)
  13. )
  14.  
  15. (run-neuron 'test3
  16.             '(a b a d b)
  17.             '(a a b a a))
  18. --> (a x = = x)
  19.  
  20. If you want to hide a neuron inside a Lisp function this is done with: 
  21.  
  22. (defun neuron-function (&rest l)
  23.   (apply 'run-neuron 'test3 l))
  24.  
  25. (neuron-function '(a b a d b) '(a a b a a))
  26. --> (a x = = x)
  27.  
  28. (out-range below higher)
  29.  
  30. - out-range defines what symbols are returned if in and out positions are outside the source pattern. Below is used when in or out tries to access symbols below the first symbol, and the higher value is used when they try to access symbols higher than the last symbol in the pattern.
  31.  
  32. (def-neuron len-to-len2
  33.    (out-range 0 0)
  34.    (otherwise (+ (get-tick (in 1 0))
  35.                  (get-tick (in 1 -1))))
  36. )
  37.  
  38. (run-neuron 'len-to-len2
  39.             '(1/2 1/4 1/8 1/16 1/32))
  40. --> (192 288 144 72 36)
  41.